﻿using System;
using System.Collections.Generic;
using System.Text;

namespace GraphForms.Algorithms.SpanningTree
{
    /// <summary>
    /// This interface is simply a combination of the 
    /// <see cref="T:ISpanningTreeAlgorithm`2{Node,Edge}"/> and
    /// <see cref="T:IRootedAlgorithm`1{Node}"/> interfaces, used for
    /// describing classes that implement both of them.
    /// </summary>
    /// <typeparam name="Node">The type of vertices in the spanning tree 
    /// generated by this algorithm as well as the type of its root value.
    /// </typeparam>
    /// <typeparam name="Edge">The type of edges in the spanning tree 
    /// generated by this algorithm.</typeparam>
    public interface IRootedSpanningTreeAlgorithm<Node, Edge>
        : ISpanningTreeAlgorithm<Node, Edge>, IRootedAlgorithm<Node>
        where Edge : IGraphEdge<Node>
    {
    }
}
